package com.ibm.interfaces;

import java.math.BigInteger;
import java.util.Collection;

import com.ibm.cps.message.ParsedDataMessage;
import com.ibm.cps.newmessage.RuleMetaData;
import com.ibm.util.exception.CPSException;

public interface IRuleEngine {
	/**
	 * 
	 * @param schema
	 *            the schema id of the data
	 * @param message
	 *            The data message
	 * @return A list that contains all the names of the hit rules
	 * @throws CPSException
	 */
	public abstract Collection<BigInteger> executeRules(ParsedDataMessage message)
			throws CPSException;

	public void addRules(ITimeSeriesSchema schema,
			Collection<RuleMetaData> ruleRecs) throws CPSException;

	public void addRule(ITimeSeriesSchema schema, String ruleId,
			String ruleString) throws CPSException;

	public void removeRule(ITimeSeriesSchema schema, String ruleId)
			throws CPSException;

}